/*
 * @Descripttion: 
 * @version: 
 * @Author: wtzhang
 * @Date: 2021-07-06 15:25:22
 * @LastEditors: wtzhang
 * @LastEditTime: 2021-07-06 17:55:57
 */
// (function () {
//   console.log('******************** 接口 *********************');
  
//   // 可用一个 type 关键字来描述一个对象的类型
//   type mytype = {
//     name: string;
//     age: number;
//   }
//   const obj: mytype = {
//     name: 'jack',
//     age: 18
//   }
//   console.log(obj);
  
// })()

// (function () {
//   console.log('******************** 接口 *********************');
  
//   /**
//    * 接口用来定义一个类的结构，用来定义一个类中应该包含哪些属性和方法
//    *  同时接口也可以当成类型声明去使用
//    */
//   interface myInterface {
//     name: string;
//     age: number;
//   }
//   interface myInterface {
//     gender: string;
//   }
//   const obj: myInterface = {
//     name: 'jack',
//     age: 18,
//     gender: '男'
//   }
//   console.log(obj);
  
// })()

(function () {
  
  // 接口声明
  interface myInter {
    name: string;
    age: number;
    sayHello(): void;
  }
  /**
   * 定义类时，可以使类去实现一个接口
   * 实现接口就是使类满足接口要求
   */
  class MyClass implements myInter {
    name: string;
    age: number;
    /**
     * 类实现接口时，接口中的属性，在类中都得初始化，且要在构造函数中明确赋值。
     */
    constructor(name: string, age: number) {
      this.name = name
      this.age = age
    }
    sayHello() {
      console.log('大家好！');  
    }
  }
})()